import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'

/**
 * 注意：子菜单仅在路由children.length> = 1时出现
 * 详细信息请参见：https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
 *
 * 隐藏：如果设置为true，则为true，则项目不会显示在边栏中（默认为false）
 * alwaysShow：true如果设置为true，将始终显示根菜单
 * 如果未设置alwaysShow，则当项具有多个子路线时，
 * 它将变为嵌套模式，否则不显示根菜单
 * redirect：noRedirect如果设置了noRedirect将不会在面包屑中重定向
 * 名称：“ router-name”（路由器名称），该名称由<keep-alive>使用（必须设置！！！）
 * meta：{
     角色：['admin'，'editor']控制页面角色（您可以设置多个角色）
     title：标题显示在侧边栏和面包屑中的名称（推荐集）
     图标：'svg-name'/'el-icon-x'图标显示在侧栏中
     面包屑：如果设置为false，则该项将隐藏在面包屑中（默认值为true）
     activeMenu：如果设置了路径，则为“ /example /list”，边栏将突出显示您设置的路径
   }
 */

/**
 * constantRoutes
 * 所有权限通用路由表
 * 如首页和登录页和一些不用权限的公用页面
 *
 */
export const constantRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },

  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  },

  {
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    children: [
      {
        path: 'dashboard',
        name: 'Dashboard',
        component: () => import('@/views/dashboard/index'),
        meta: { title: '首页', icon: 'example' }
      }
    ]
  }
]

const createRouter = () =>
  new Router({
    // mode: 'history', // require service support
    scrollBehavior: () => ({ y: 0 }),
    routes: constantRoutes
  })

const router = createRouter()

// 详细信息，请参见：https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router
